package com.atguigu.tingshu.search.test;

import java.util.concurrent.CompletableFuture;

public class Demo {

    public static void main(String[] args) {
        //supplyAsync:使用一个线程执行操作，返回结果
        CompletableFuture<Integer> completableFuture1 =
                                 CompletableFuture.supplyAsync(() -> {
            System.out.println("1");
            return 1024;
        });

        //runAsync:使用一个线程执行操作，没有返回结果
        CompletableFuture<Void> completableFuture2 =
                                CompletableFuture.runAsync(() -> {
            System.out.println("2");
        });

        //thenAcceptAsync:上一个线程执行完成之后，才执行当前操作，
        // 获取上一个线程执行返回结果
        CompletableFuture<Void> completableFuture3 =
                         completableFuture1.thenAcceptAsync(value -> {
             System.out.println("3 "+value);
        });

        //等待所有线程执行完成之后，进行汇总
        CompletableFuture.allOf(
                completableFuture1,
                completableFuture2,
                completableFuture3
        ).join();
    }
}
